package com.b2mining.integration.helper;

import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Vector;

/**
 * Clase que permite almacena funciones de ayuda para el parseo de archivos con formato CSV.  
 * @since (7/3/2003 10:35:26 AM)
 * @author Synopsis S.A. <BR>
 * Analista Programador: Miguel Lora G., Janyn Roca
 * 						
 */
public class HelperCSV {

	/**
	 * Metodo que identifica las palabras encontradas en una cadena separadas por comas.
	 * @param line cadena que contiene una linea del archivo CSV.
	 * @return lista de palabras encontradas.
	 */	
	public static Vector procesarPalabra(String line) throws Exception
	{
		Vector campos=new Vector();
		try{
			String word;	
		 	StringTokenizer st = new StringTokenizer(line, Constantes.DELIMITADOR_CSV);
		 	line = line.trim();
			while (st.hasMoreTokens()) 
			{
	      		word = st.nextToken().trim();
	      		campos.add(word);
	      	}
		}catch(Exception e){
			throw new Exception("Error al procesar Palabra en linea:"+line);
		}		
		return campos;
			
	}
	
	public static ArrayList procesarPalabracsv(String[] line) throws Exception
	{
		ArrayList campos=new ArrayList();
		try{
			for(int i=0;i<line.length;i++){
                            campos.add(line[i]);
                        }
		}catch(Exception e){
			throw new Exception("Error al procesar Palabra en linea:"+line);
		}		
		return campos;
			
	}
	
		
	/**
	 * Metodo que identifica el nivel de la linea del archivo CSV en funcion de la cantidad de comas que presenta.
	 * @param line cadena que contiene una linea del archivo CSV.
	 * @return numero de nivel.
	 */	
	public static int getNivel(String linea) throws Exception
	{
		int i=0;
		int auxiliar=0;
		
		while(true)	
		{
			if (linea.length()==0)
				break;
				
			if (linea.substring(i,i+1).equals(Constantes.DELIMITADOR_CSV))
			{
				auxiliar++;	
			}
			else
				break;
			
			i++;
				
			if (i==linea.length())
				break;
		}
		
		if (auxiliar!=0)
			if (auxiliar%2 !=0){
				throw new Exception("Formato Incorrecto de Comas o Campos en la linea:"+linea);
			}else	
				auxiliar=auxiliar/2;
		
		return auxiliar;
		
	}
	

}
